//
// Created by Administrator on 2021/8/3.
//

//给定一个偶数长度的数组，其中不同的数字代表着不同种类的糖果，每一个数字代表一个糖果。
// 你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。
//
//来源：力扣（LeetCode）
//链接：https://leetcode-cn.com/problems/distribute-candies
//著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
// 拿一半的糖果 最多能多少种
#include <vector>
#include <iostream>
#include <algorithm>
#include <queue>
#include <unordered_map>
#include <unordered_set>
#include <string>

using namespace std;

class Solution {
public:
    int distributeCandies(vector<int> &candyType) {
        // 实际上就是看有多少种糖果
        int n = (int) candyType.size();
        unordered_set<int> counter;
        for (auto &x:candyType) {
            counter.insert(x);
        }
        return min(n / 2, (int) counter.size());
    }
};

int main() {
    vector<int> candies{1, 1, 2,  3};
    Solution solution;
    cout << solution.distributeCandies(candies) << endl;
    return 0;
}
